home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 072 (1988-11-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 072 (1988-11-15)(Ossowski, Stefan)(DE)(PD).adf / AssemblyDemos / grafos.asm < prev    next >
Assembly Source File  |  1988-08-14  |  20KB  |  668 lines

  1. ;GRAFOS  By: Foster Hall
  2.             include "startup.asm"
  3.  
  4. ;Program Equates. These are defined here rather than in an Include File. This
  5. ;makes assembly faster.
  6.  
  7. ;MENU EQUATES*
  8. MENUPICK            EQU       $00000100
  9. ITEMTEXT            EQU       2
  10. ITEMENABLED         EQU       $10
  11. HIGHCOMP            EQU       $40
  12. HIGHBOX             EQU       $80
  13. COMMSEQ             EQU       $4
  14. MENUNULL            EQU       $0000FFFF
  15. mi_SIZEOF           EQU       $22
  16. Menu1Left           EQU       1
  17. Menu1Width          EQU       9*8
  18. ItemFlags           EQU       ITEMTEXT
  19. CItemFlags          EQU       ITEMTEXT!ITEMENABLED!HIGHCOMP
  20. MenuOn              EQU       $0001
  21. JAM1                EQU       0
  22.  
  23. ;WINDOW EQUATES*
  24. wd_UserPort         EQU       $56
  25. im_class            EQU       20
  26. im_Code             EQU       $18
  27. im_address          EQU       $1C
  28. im_IDCMPWindow      EQU       $2c
  29. wd_RPort            EQU       50
  30. wd_MouseY           EQU       $c
  31. wd_MouseX           EQU       $e
  32. wd_MenuStrip        EQU       $1c
  33. wd_IDCMP            EQU       $52
  34. ACTIVATE            EQU       $1000
  35. CLOSEWINDOW         EQU       $0200
  36. MOUSEBUTTONS        EQU       $8
  37. WINDOWCLOSE         EQU       $8
  38. WINDOWDEPTH         EQU       $4
  39. WINDOWSIZING        EQU       1
  40. BORDERLESS          EQU       $0800
  41. WBENCHSCREEN        EQU       $0001
  42. SYSBASE             EQU       $4        this is the same as _AbsExecBase
  43. MODE_OLDFILE        equ       $3ed
  44.  
  45. ;library offsets.  This replaces the necessity to get the offsets from
  46. ;AMIGA-LIB, thus the program assembles faster. It still has to be
  47. ;linked though.
  48. _AbsExecBase        equ       $4
  49. GetPrefs            EQU       $ffffff7c
  50. SetPrefs            EQU       $fffffebc
  51. FindTask            equ       $fffffeda
  52. DrawEllipse         EQU       $ffffff4c
  53. OpenLibrary         EQU       $fffffdd8
  54. OpenWindow          EQU       $ffffff34
  55. Open                equ       $ffffffe2
  56. CloseWindow         EQU       $ffffffb8
  57. CloseLibrary        EQU       $fffffe62
  58. Move                EQU       $ffffff10
  59. Draw                EQU       $ffffff0a
  60. SetAPen             EQU       $fffffeaa
  61. SetDrMd             EQU       $fffffe9e
  62. ScrollRaster        EQU       $fffffe74
  63. Text                EQU       $ffffffc4
  64. SetMenuStrip        EQU       $fffffef8
  65. ClearMenuStrip      EQU       $ffffffca
  66. GetMsg              EQU       $fffffe8c
  67. WaitPort            equ       $fffffe80
  68. ReplyMsg            EQU       $fffffe86
  69. ItemAddress         EQU       $ffffff70
  70.  
  71. ;this macro adds the "(A6)" to the end of all library calls
  72. SYS:                MACRO
  73.                     JSR     \1(A6)
  74.                     ENDM
  75.  
  76. ;THE FOLLOWING MACROS ARE FOR THE MENU STRIP
  77. IntuiText           MACRO
  78.             DC.B    \1      FrontPen
  79.             DC.B    \2      BackPen
  80.             DC.B    \3      DrawMode
  81.             DC.B    0       KlugeFill00
  82.             DC.W    \4      Leftedge
  83.             DC.W    \5      TopEdge
  84.             DC.L    \6      FontStuff
  85.             DC.L    \7      YourText
  86.             DC.L    \8      NextText
  87.                     ENDM
  88.  
  89. Menu                MACRO
  90.  
  91.             DC.L    \1      mu_NextMenu
  92.             DC.W    \2      mu_LeftEdge
  93.             DC.W    \3      mu_TopEdge
  94.             DC.W    \4      mu_Width
  95.             DC.W    \5      mu_Height
  96.             DC.W    \6      mu_Flags
  97.             DC.L    \7      mu_MenuName
  98.             DC.L    \8      mu_FirstItem
  99.             DC.W    0,0,0,0
  100.  
  101.                     ENDM
  102.  
  103. MenuItem            MACRO
  104.  
  105.             DC.L    \1      mi_NextItem
  106.             DC.W    \2      mi_LeftEdge
  107.             DC.W    \3      mi_TopEdge
  108.             DC.W    \4      mi_Width
  109.             DC.W    \5      mi_Height
  110.             DC.W    \6      mi_Flags
  111.             DC.L    \7      mi_MutualExclude
  112.             DC.L    \8      mi_ItemFill
  113.             DC.L    \9      mi_SelectFill
  114.  
  115.                     ENDM
  116.  
  117. MenuItem2           MACRO
  118.  
  119.             DC.B    \1      mi_Command
  120.             DC.B    0       Kluge
  121.             DC.L    \2      mi_SubItem
  122.             DC.W    \3      mi_NextSelect
  123.                     ENDM
  124. ;LET'S GO THEN!
  125. MAIN                MOVE.L    SP,SAVESP          SAVE THE STACK POINTER FIRST THING
  126.  
  127. OPENINTUITION
  128.           MOVE.L    SYSBASE,A6          GET EXEC POINTER
  129.           MOVE.L    #INTUITIONNAME,A1   GET NAME ADDRESS
  130.           MOVE.L    #0,D0               LIBRARY VERSION  (0=DON'T CARE)
  131.           SYS       OpenLibrary         OPEN LIBRARY
  132.           MOVE.L    D0,INTUITIONBASE    STORE LIBRARY POINTER
  133.           BEQ       ENDWINDOW
  134.           BRA.S     DONEINT
  135. INTUITIONNAME       DC.B      'intuition.library',0
  136. INTUITIONBASE       DS.L      1
  137. DONEINT
  138.  
  139. OPENGRAPHICS
  140.           MOVE.L    SYSBASE,A6          GET EXEC BASE
  141.           MOVE.L    #GFXNAME,A1         GET ADDRESS BASE FOR NAME
  142.           MOVE.L    #0,D0               VERSION
  143.           SYS       OpenLibrary         OPEN LIBRARY
  144.           MOVE.L    D0,GFXBASE          STORE POINTER
  145.           BEQ       ENDWINDOW
  146.           BRA.S     DONEGFX
  147. GFXNAME             DC.B      'graphics.library',0
  148. GFXBASE             DS.L      1
  149. DONEGFX
  150.  
  151. OPENWINDOW
  152.           MOVE.L    INTUITIONBASE,A6
  153.           MOVE.L    #MYWINDOW,A0
  154.           SYS       OpenWindow
  155.           MOVE.L    D0,WINDOWPOINTER
  156.           BEQ       ENDWINDOW
  157.           MOVE.L    D0,A0
  158.           MOVE.L    wd_RPort(a0),RASTERPORT   GET THE RASTERPORT ADDRESS
  159.           MOVE.L    wd_UserPort(a0),USERPORT
  160. SETSTRIP
  161.           MOVE.L    WINDOWPOINTER,A0
  162.           MOVE.L    #MENUSTRIP,A1
  163.           MOVE.L    INTUITIONBASE,A6
  164.           SYS       SetMenuStrip
  165.           BRA.S     TEXTPRINT
  166.  
  167. ;THIS IS THE TEXT PRINT ROUTINE FOR THE OPENING PAGE*
  168.  
  169. PRINT     BSR.S     SETDRMD
  170. PRINT2    BSR.S     SETAPEN
  171. PRINT3    BSR.S     MOVE
  172.           BSR.S     TEXT
  173.           RTS
  174. SETDRMD
  175.           BSR.S     GA6RPA1
  176.           MOVE      DRAWMODE,d0
  177.           SYS       SetDrMd
  178.           RTS
  179. SETAPEN
  180.           BSR.S     GA6RPA1
  181.           MOVE      PENCOLOR,D0
  182.           SYS       SetAPen
  183.           RTS
  184. TEXT
  185.           BSR.S     GA6RPA1
  186.           MOVE.L    TEXTPOINTER,A0
  187.           MOVE      NUMCHARS,D0
  188.           SYS       Text
  189.           RTS
  190. MOVE
  191.           BSR.S     GA6RPA1
  192.           MOVE      XPOSITION,D0
  193.           MOVE      YPOSITION,D1
  194.           SYS       Move
  195.           RTS
  196. DRAW
  197.           BSR.S     GA6RPA1
  198.           SYS       Draw
  199.           RTS
  200. GA6RPA1
  201.           MOVE.L    GFXBASE,A6
  202.           MOVE.L    RASTERPORT,A1
  203.           RTS
  204.  
  205. ;THIS ROUTINE POSITIONS THE LINE OF TEXT ON THE SCREEN AND THEN CALLS*
  206. ;THE ABOVE PRINT ROUTINE.                                            *
  207.  
  208. TEXTPRINT
  209.           MOVE      #0,DRAWMODE
  210.           MOVE      #2,PENCOLOR
  211.           MOVE      #276,XPOSITION
  212.           MOVE      #20,YPOSITION
  213.           MOVE.L    #DATA1,TEXTPOINTER
  214.           MOVE      #ENDDATA1-DATA1,NUMCHARS
  215.           BSR       PRINT
  216.  
  217.           MOVE      #266,XPOSITION
  218.           MOVE      #30,YPOSITION
  219.           MOVE.L    #DATA2,TEXTPOINTER
  220.           MOVE      #ENDDATA2-DATA2,NUMCHARS
  221.           BSR       PRINT3
  222. DRAWN
  223.           ADDI      #1,YPOSITION
  224.           ADDI      #1,PENCOLOR
  225.           CMPI      #42,YPOSITION
  226.           BEQ.S     MOVEIT
  227.           BSR       PRINT2
  228.           BRA.S     DRAWN
  229. MOVEIT
  230.           MOVE      #2,PENCOLOR
  231.           MOVE      #260,XPOSITION
  232.           MOVE      #50,YPOSITION
  233.           MOVE.L    #DATA3,TEXTPOINTER
  234.           MOVE      #ENDDATA3-DATA3,NUMCHARS
  235.           BSR       PRINT2
  236.  
  237.           MOVE      #2,PENCOLOR
  238.           MOVE      #260,XPOSITION
  239.           MOVE      #60,YPOSITION
  240.           MOVE.L    #DATA3A,TEXTPOINTER
  241.           MOVE      #ENDDATA3A-DATA3A,NUMCHARS
  242.           BSR       PRINT2
  243.  
  244.           MOVE      #2,PENCOLOR
  245.           MOVE      #236,XPOSITION
  246.           MOVE      #70,YPOSITION
  247.           MOVE.L    #DATA3B,TEXTPOINTER
  248.           MOVE      #ENDDATA3B-DATA3B,NUMCHARS
  249.           BSR       PRINT2
  250.  
  251.           MOVE      #184,XPOSITION
  252.           MOVE      #80,YPOSITION
  253.           MOVE.L    #DATA4,TEXTPOINTER
  254.           MOVE      #ENDDATA4-DATA4,NUMCHARS
  255.           BSR       PRINT3
  256.  
  257.           MOVE      #112,XPOSITION
  258.           MOVE      #90,YPOSITION
  259.           MOVE.L    #DATA5,TEXTPOINTER
  260.           MOVE      #ENDDATA5-DATA5,NUMCHARS
  261.           BSR       PRINT3
  262.  
  263.           MOVE      #124,XPOSITION
  264.           MOVE      #100,YPOSITION
  265.           MOVE.L    #DATA6,TEXTPOINTER
  266.           MOVE      #ENDDATA6-DATA6,NUMCHARS
  267.           BSR       PRINT3
  268.  
  269.           MOVE      #120,XPOSITION
  270.           MOVE      #110,YPOSITION
  271.           MOVE.L    #DATA7,TEXTPOINTER
  272.           MOVE      #ENDDATA7-DATA7,NUMCHARS
  273.           BSR       PRINT3
  274.  
  275.           MOVE      #124,XPOSITION
  276.           MOVE      #120,YPOSITION
  277.           MOVE.L    #DATA8,TEXTPOINTER
  278.           MOVE      #ENDDATA8-DATA8,NUMCHARS
  279.           BSR       PRINT3
  280.           MOVE      #161,BASEX
  281.           MOVE      #160,BASEY
  282.           MOVE      #160,BASEY1
  283.           MOVE      #0,COUNT
  284.  
  285. ;THIS ROUTINE DRAWS THE CIRCLE GRAPHICS ON THE TITLE SCREEN*
  286.  
  287.           BRA.S     YPOSIT
  288. BLURB
  289.           BSR       GA6RPA1
  290.           MOVE      BASEX,D0
  291.           MOVE      #13,D2
  292.           MOVE      #08,D3
  293.           JSR       DrawEllipse(a6)
  294.           ADDI      #2,BASEX
  295.           CMPI      #479,BASEX
  296.           BGT.S     TITLESCREEN
  297.           RTS
  298. YPOSIT
  299.           CMPI      #0,COUNT
  300.           BNE.S     UPIT
  301.           SUBI      #1,BASEY
  302.           MOVE      BASEY,D1
  303.           BSR.S     BLURB
  304.           ADDI      #1,BASEY1
  305.           MOVE      BASEY1,D1
  306.           BSR.S     BLURB
  307.           CMPI      #150,BASEY
  308.           BGT.S     YPOSIT
  309.           MOVE      #1,COUNT
  310.           BRA.S     YPOSIT
  311. UPIT
  312.           ADDI      #1,BASEY
  313.           MOVE      BASEY,D1
  314.           BSR.S     BLURB
  315.           SUBI      #1,BASEY1
  316.           MOVE      BASEY1,D1
  317.           BSR       BLURB
  318.           CMPI      #180,BASEY
  319.           BLT.S     YPOSIT
  320.           MOVE      #0,COUNT
  321.           BRA       YPOSIT
  322.  
  323. ;THIS CHECKS THE POSITION OF THE MOUSE FOR EACH CORNER TO DETERMINE THE*
  324. ;CORRECT ACTION TO PERFORM                                             *
  325.  
  326. TITLESCREEN
  327.           BSR.S     MOUSER
  328.           BRA.S     TITLESCREEN
  329. MOUSER
  330.           BSR.S     GRAFOSCOLOR
  331. MOUSER2
  332.           MOVE.L    SYSBASE,A6
  333.           MOVE.L    USERPORT,A0
  334.           SYS       GetMsg
  335.           TST.L     D0
  336.           BEQ       RETURN
  337.           MOVE.L    D0,A0
  338.           MOVE.L    im_class(a0),IMCLASS
  339.           CMPI.L    #MENUPICK,IMCLASS
  340.           BNE       RETURN
  341.           MOVE.W    im_Code(a0),IMCODE
  342. MENUPICKED
  343.           MOVE.W    IMCODE,d0
  344.           MOVEA.L   #MENUSTRIP,a0
  345.           MOVE.L    INTUITIONBASE,A6
  346.           SYS       ItemAddress
  347.           TST.L     D0
  348.           BEQ       RETURN
  349.           MOVEA.L   D0,A0
  350.           MOVE.L    #34,D0
  351.           MOVEA.L   0(A0,D0),A1
  352.           JMP       (A1)
  353. RESTART
  354.           BSR.S     SCROLL
  355.           JMP       TEXTPRINT
  356. CLEAR
  357.           BSR.S     SCROLL
  358. CLEARLOOP
  359.           BSR.S     MOUSER2
  360.           BRA.S     CLEARLOOP
  361. GRAFOSCOLOR
  362.           ADDI      #1,PENCOLOR
  363.           MOVE      #294,XPOSITION
  364.           MOVE      #163,YPOSITION
  365.           MOVE.L    #DATA2,TEXTPOINTER
  366.           MOVE      #ENDDATA2-DATA2-8,NUMCHARS
  367.           BSR       PRINT2
  368.           RTS
  369.  
  370. ;THIS IS THE SCREEN SCROLL ROUTINE THAT ACTUALLY MOVES EACH SCREEN*
  371.  
  372. SCROLL
  373.           CLR.l     COUNT
  374. SCROLLUP
  375.           BSR       GA6RPA1
  376.           MOVE      #0,D0
  377.           MOVE      #5,D1
  378.           MOVE      #0,D2
  379.           MOVE      #0,D3
  380.           MOVE      #640,D4
  381.           MOVE      #200,D5
  382.           SYS       ScrollRaster
  383.           ADDI      #5,COUNT
  384.           CMPI      #200,COUNT
  385.           BLT.S     SCROLLUP
  386.           CLR.l     COUNT
  387.           RTS
  388.  
  389. ;THE FOLLOWING ROUTINES DOES THE ACTUAL DRAW ROUTINE FOR THE SPIRALS*
  390.  
  391. DRAWLINE
  392.           BSR.S     SCROLL
  393.           MOVE      #320,XPOSITION
  394.           MOVE      #100,YPOSITION
  395.           BSR       MOVE
  396. SPIRAL
  397.           MOVEM     BASEX,XPOSITION
  398.           MOVEM     BASEY,YPOSITION
  399.           BSR       MOVE
  400. CIRCLE
  401.           MOVE      DRAWX,D0
  402.           MOVE      DRAWY,D1
  403.           BSR       DRAW
  404.  
  405.           CMPI      #0,COUNT
  406.           BEQ.S     STAGE1
  407.           CMPI      #1,COUNT
  408.           BEQ.S     STAGE2
  409.           CMPI      #2,COUNT
  410.           BEQ.S     STAGE3
  411.           CMPI      #3,COUNT
  412.           BEQ.S     STAGE4
  413.           BRA       LOOP
  414. STAGE1
  415.           ADDI      #8,DRAWY
  416.           CMPI      #200,DRAWY
  417.           BLT       LOOP
  418.           ADDI      #1,COUNT
  419.           MOVE      #200,DRAWY
  420. STAGE2
  421.           ADDI      #16,DRAWX
  422.           CMPI      #640,DRAWX
  423.           BLT       LOOP
  424.           ADDI      #1,COUNT
  425.           MOVE      #640,DRAWX
  426. STAGE3
  427.           SUBI      #8,DRAWY
  428.           CMPI      #0,DRAWY
  429.           BGT.S     LOOP
  430.           ADDI      #1,COUNT
  431.           MOVE      #0,DRAWY
  432. STAGE4
  433.           SUBI      #16,DRAWX
  434.           CMPI      #0,DRAWX
  435.           BGT.S     LOOP
  436.           CLR       DRAWY
  437.           CLR       DRAWX
  438.           CLR       COUNT
  439. MOUSEPOINT
  440.           MOVE.L    WINDOWPOINTER,A0
  441.           MOVEM     wd_MouseX(A0),BASEX
  442.           MOVEM     wd_MouseY(A0),BASEY
  443. TEST
  444.           MOVE.L    WINDOWPOINTER,A0
  445.           MOVE      wd_MouseX(A0),D0
  446.           CMP       BASEX,D0
  447.           BNE.S     COLOR
  448.           MOVE      wd_MouseY(A0),D0
  449.           CMP       BASEY,D0
  450.           BNE.S     COLOR
  451.           BSR       MOUSER2
  452.           BRA.S     TEST
  453. COLOR
  454.           ADDI      #1,PENCOLOR
  455.           BSR       SETAPEN
  456.  
  457. LOOP      BRA       SPIRAL
  458.  
  459. ;THIS IS THE CIRCLE DRAW ROUTINE*
  460.  
  461. SMALLELLIPSE
  462.           MOVE.W    #25,DRAWX
  463.           MOVE.W    #17,DRAWY
  464.           BRA.S     ELLIPSE
  465.  
  466. LARGEELLIPSE
  467.           MOVE.W    #50,DRAWX
  468.           MOVE.W    #40,DRAWY
  469. ELLIPSE
  470.           BSR       SCROLL
  471.  
  472.           MOVE      #2,PENCOLOR
  473.           BSR.S     DOPEN
  474.           MOVE      #320,D0
  475.           MOVE      #100,D1
  476.           BSR       MOVE
  477. DRAW2
  478.           BSR.S     DOCIRCLES
  479.           BSR       MOUSER2
  480.           BRA.S     DRAW2
  481. DOPEN
  482.           BSR       SETAPEN
  483.           RTS
  484. DOCIRCLES
  485.           MOVE.L    WINDOWPOINTER,A0
  486.           BSR       GA6RPA1
  487.           MOVE      wd_MouseX(A0),d0
  488.           MOVE      wd_MouseY(A0),d1
  489.           MOVE      DRAWX,D2
  490.           MOVE      DRAWY,D3
  491.           JSR       DrawEllipse(a6)
  492. RETURN    RTS
  493.  
  494. SIZEIT
  495.           SUBI      #2,DRAWX
  496.           SUBI      #2,DRAWY
  497.           BEQ.S     RESETXY
  498.           RTS
  499. RESETXY
  500.           MOVE      #75,DRAWX
  501.           MOVE      #50,DRAWY
  502.           RTS
  503. ;AND NOW WE CLOSE EVERYTHING OFF WHEN WE'RE DONE*
  504.  
  505. ENDWINDOW
  506.           MOVE.L    WINDOWPOINTER,A0
  507.           MOVE.L    INTUITIONBASE,A6
  508.           SYS       ClearMenuStrip
  509.           MOVE.L    WINDOWPOINTER,A0
  510.           MOVE.L    INTUITIONBASE,A6
  511.           SYS       CloseWindow
  512.  
  513. ENDINTUITION
  514.           MOVE.L    INTUITIONBASE,A1
  515.           MOVE.L    SYSBASE,A6
  516.           SYS       CloseLibrary
  517. EDNGFX
  518.           MOVE.L    GFXBASE,A1
  519.           SYS       CloseLibrary
  520.  
  521.           MOVE.L    SAVESP,SP
  522.           RTS
  523.  
  524. ;THIS SECTION HAS ALL THE DATA AND TEXT*
  525.  
  526.           SECTION  constants,DATA
  527.  
  528. MYIDCMP        EQU  MENUPICK
  529. MYFLAGS        EQU  ACTIVATE!BORDERLESS
  530.  
  531. DATA1            DC.B 'Welcome to:'
  532. ENDDATA1
  533. DATA2            DC.B 'GRAFOS (V .01)'
  534. ENDDATA2
  535. DATA3            DC.B 'By: Foster Hall'
  536. ENDDATA3
  537. DATA3A           DC.B '12679-99th Ave.'
  538. ENDDATA3A
  539. DATA3B           DC.B 'Surrey, B.C. V3V 2P6'
  540. ENDDATA3B
  541. DATA4            DC.B 'A simple assembly language program'
  542. ENDDATA4
  543. DATA5            DC.B 'utilizing a few of the many AMIGA graphics routines.'
  544. ENDDATA5
  545. DATA6            DC.B ' This version is still in the experimental stage,'
  546. ENDDATA6
  547. DATA7            DC.B 'used primarily as a learning tool, with the hopes'
  548. ENDDATA7
  549. DATA8            DC.B 'that it will someday become a productive utility.'
  550. ENDDATA8
  551.           CNOP  0,4
  552.  
  553. MYWINDOW
  554.  
  555.                  DC.W      0         LEFT EDGE
  556.                  DC.W      0         TOP EDGE
  557.                  DC.W      640       WIDTH
  558.                  DC.W      200       HEIGHT
  559.                  DC.B      2         DETAIL PEN
  560.                  DC.B      0         BLOCK PEN
  561.                  DC.L      MYIDCMP   IDCMP FLAGS
  562.                  DC.L      MYFLAGS   WINDOW FLAGS
  563.                  DC.L      0         FIRST GADGET
  564.                  DC.L      0         CHECKMARK
  565.                  DC.L      0         WINDOW TITLE
  566.                  DC.L      0         SCREEN
  567.                  DC.L      0         CUSTOM BITMAP
  568.                  DC.W      300       MIN. WIDTH
  569.                  DC.W      10        MIN. HEIGHT
  570.                  DC.W      -1        MAX. WIDTH
  571.                  DC.W      -1        MAX HEIGHT
  572.                  DC.W      WBENCHSCREEN
  573.  
  574. ;this is the data for the menu strip, calling the macros defined at the
  575. ;top of the file.
  576.  
  577. MENUSTRIP
  578.                  CNOP 0,4
  579. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  580.  
  581. MENU#1
  582. M1               Menu         M2,Menu1Left,0,Menu1Width,8,MenuOn,M1T0,M1_1
  583. M2               Menu         0,2+Menu1Width,0,Menu1Width,8,MenuOn,M2T0,M2_1
  584.  
  585. M1_1             MenuItem     M1_2,0,9*0,8*8,8,CItemFlags,0,Menu1Text1,0
  586.                  MenuItem2    0,0,0
  587.                  DC.L         RESTART
  588.  
  589. M1_2             MenuItem     M1_3,0,9*1,8*8,8,CItemFlags,0,Menu1Text2,0
  590.                  MenuItem2    0,0,0
  591.                  DC.L         CLEAR
  592.  
  593. M1_3             MenuItem     0,0,9*2,8*8,8,CItemFlags,0,Menu1Text3,0
  594.                  MenuItem2    0,0,0
  595.                  DC.L         ENDWINDOW
  596.  
  597. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  598. MENU#2
  599. ;;;;;
  600. M2_1             MenuItem     M2_2,0,9*0,8*8,8,CItemFlags,0,Menu2Text1,0
  601.                  MenuItem2    0,M2_1A,0
  602. ;;;;;
  603. M2_1A            MenuItem     M2_1B,8*8,9*0,8*8,8,CItemFlags,0,Menu2Text1A,0
  604.                  MenuItem2    0,0,0
  605.                  DC.L         SMALLELLIPSE
  606. ;;;;;
  607. M2_1B            MenuItem     0,8*8,9*1,8*8,8,CItemFlags,0,Menu2Text1B,0
  608.                  MenuItem2    0,0,0
  609.                  DC.L         LARGEELLIPSE
  610. ;;;;;
  611. M2_2             MenuItem     0,0,9*1,8*8,8,CItemFlags,0,Menu2Text2,0
  612.                  MenuItem2    0,0,0
  613.                  DC.L         DRAWLINE
  614.  
  615. Menu1Text1       IntuiText    2,0,JAM1,0,0,TEXTATTR,M1T1,0
  616. Menu1Text2       Intuitext    2,0,JAM1,0,0,TEXTATTR,M1T2,0
  617. Menu1Text3       Intuitext    2,0,JAM1,0,0,TEXTATTR,M1T3,0
  618. Menu2Text1       Intuitext    2,0,JAM1,0,0,TEXTATTR1,M2T1,0
  619. Menu2Text1A      Intuitext    2,0,JAM1,0,0,0,M2T1A,0
  620. Menu2Text1B      Intuitext    2,0,JAM1,0,0,0,M2T1B,0
  621. Menu2Text2       IntuiText    2,0,JAM1,0,0,TEXTATTR1,M2T2,0
  622.  
  623. ;;;;;
  624. M1T0             DC.B         'PROJECT',0
  625. M1T1             DC.B         'Restart',0
  626. M1T2             DC.B         'Clear',0
  627. M1T3             DC.B         'Quit',0
  628. M2T0             DC.B         'EFFECTS',0
  629. M2T1             DC.B         'Circles',0
  630. M2T1A            DC.B         'Small',0
  631. M2T1B            DC.B         'Large',0
  632. M2T2             DC.B         'Spirals',0
  633.  
  634. TEXTATTR            DC.L      FONTNAME
  635.                     DC.W      8
  636.                     DC.B      7
  637.                     DC.B      0
  638. FONTNAME            DC.B      'topaz.font',0
  639. TEXTATTR1           DC.L      FONTNAME
  640.                     DC.W      8
  641.                     DC.B      2
  642.                     DC.B      0
  643. ;THIS SECTION SETS ASIDE THE STORAGE WE NEED FOR VARIOUS ROUTINES*
  644.  
  645.           SECTION  variables,BSS
  646. SAVESP              DS.L      1
  647. WINDOWPOINTER       DS.L      1
  648. RASTERPORT          DS.L      1
  649. PENCOLOR            DS.W      1
  650. DRAWX               DS.W      1
  651. DRAWY               DS.W      1
  652. BASEX               DS.W      1
  653. BASEY               DS.W      1
  654. DRAWMODE            DS.W      1
  655. COUNT               DS.L      1
  656. TEXTPOINTER         DS.L      1
  657. IMCODE              DS.L      1
  658. IMCLASS             DS.L      1
  659. NUMCHARS            DS.L      1
  660. XPOSITION           DS.L      1
  661. YPOSITION           DS.L      1
  662. BASEY1              DS.L      1
  663. USERPORT            DS.L      1
  664. _SysBase            ds.l      1
  665.                     END
  666.  
  667.  
  668.